/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import media.Media;
import java.util.SortedMap;
import vue.FicheMediaAbstract;

/**
 * Interface média DAO qui permet de gérer un ensemble de média
 * @author Florian Minin & Khémon Beh
 */
public interface MediaDAO<K extends Media> extends java.io.Serializable{


    /**
     * Méthode qui permet d'ajouter à la liste la Media passée en paramètre
     * @param m le média à ajouter à la liste
     */
    public void ajouter(K m);

    /**
     * Méthode qui permet d'insérer la Media modifiée dans la liste (il n'y a pas de doublons dans la map)
     * @param m le média modifié
     */
    public void modifier(K m);

    /**
     * Définit la note du média
     * @param m le média a noter
     */
    public void noter(K m, int note);


    public Media getMedia(int id);

    /**
     * Supprime un média
     * @param media
     */
    public void supprimerMedia(K media);

    
    public List<K> getListMedia();

    
    public SortedMap<Integer, K> getMapMedia();

   
    public void setMapMedia(SortedMap<Integer, K> listeMedia);

    /**
     * Cree un media générique du type du DAO pour permettre l'ajout
     * @return <tt>Media</tt> correspondant au DAO.
     */
    public Media creeMediaGenerique();

    public String getTypeMedia();

    public FicheMediaAbstract getFicheMedia();
}
